]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionSystem: Ignore spurious disable-extension-version-validation change
authorAleksandr Mezin <mezin.alexander@gmail.com>
Fri, 19 Nov 2021 19:15:37 +0000 (01:15 +0600)
committerMarge Bot <marge-bot@gnome.org>
Fri, 14 Jan 2022 15:23:09 +0000 (15:23 +0000)
Ignore spurious change notificatons, when the setting didn't actually change
(triggered by `dconf update`)

Workaround for https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4808

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2047>

js/ui/extensionSystem.js

index ffa3cf38d3faebcf1cc0b2674d82228004ac23b4..eec3693a46faef00184f91bd79b598bc72995ca0 100644 (file)
@@ -28,6 +28,7 @@ var ExtensionManager = class {
         this._unloadedExtensions = new Map();
         this._enabledExtensions = [];
         this._extensionOrder = [];
+        this._checkVersion = false;
 
         Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
     }
@@ -348,9 +349,7 @@ var ExtensionManager = class {
         // Default to error, we set success as the last step
         extension.state = ExtensionState.ERROR;
 
-        let checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY);
-
-        if (checkVersion && ExtensionUtils.isOutOfDate(extension)) {
+        if (this._checkVersion && ExtensionUtils.isOutOfDate(extension)) {
             extension.state = ExtensionState.OUT_OF_DATE;
         } else if (!this._canLoad(extension)) {
             this.logExtensionError(extension.uuid, new Error(
@@ -525,6 +524,12 @@ var ExtensionManager = class {
     }
 
     _onVersionValidationChanged() {
+        const checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY);
+        if (checkVersion === this._checkVersion)
+            return;
+
+        this._checkVersion = checkVersion;
+
         // Disabling extensions modifies the order array, so use a copy
         let extensionOrder = this._extensionOrder.slice();
 
@@ -577,6 +582,8 @@ var ExtensionManager = class {
         global.settings.connect('writable-changed::%s'.format(DISABLED_EXTENSIONS_KEY),
             this._onSettingsWritableChanged.bind(this));
 
+        this._onVersionValidationChanged();
+
         this._enabledExtensions = this._getEnabledExtensions();
 
         let perUserDir = Gio.File.new_for_path(global.userdatadir);